home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS03.ADF / AmigaBasicProgs / The Witching Hour < prev    next >
Text File  |  1986-04-02  |  7KB  |  230 lines

  1. '                          The Witching Hour
  2. '                Translated from IBM basic to amigaBASIC 
  3. '                          by Paul J. Maloff
  4. '    You can play against the computor or have it make a move for you by 
  5. '                        pressing RETURN.  
  6. '                    But look-out it could GET you.
  7. GOTO Programcontrol
  8. Programcontrol:
  9.  
  10.   CLEAR
  11.   GOSUB Initialize
  12.   GOTO Requestor
  13.  
  14. Twoo:
  15.   h=0 :K=0
  16.   FOR a=7 TO 35 : GOSUB Sixty : NEXT a
  17.     
  18. Threeo:
  19.   GOSUB Leave
  20.   IF h<0 THEN Quarterc      
  21.   h=0 : K=0 : a=t : GOSUB Sixty
  22.   IF h<1 THEN Quarterc
  23. GOTO Threeo
  24.  
  25. Initialize:
  26.   SCREEN 2,320,200,4,1 : COLOR 1,0 : CLS : WINDOW 2,"THE WITCHING HOUR",,,2
  27.   DIM Ghost(121),Witch(121),Square(98),d(28),x(35),y(35)
  28.   DIM l(35),xl(35),yl(35),n(28),b(42)
  29.   LINE (50,80)-(81,103),1,b
  30.   LOCATE 12,12:PRINT "The Witching Hour"
  31.   LINE (230,80)-(261,103),1,b
  32.   GET (50,80)-(81,103),Square
  33.   GOSUB Ghostbuilder
  34.   s=-1
  35.   FOR a=0 TO 7 : READ m(a) : NEXT a
  36.   FOR a=0 TO 28 : READ d(a) : NEXT a
  37.   b=48 : c=32 : d=59 :e=12
  38.   FOR a=0 TO 4
  39.     FOR f=0 TO 4
  40.       h=6*a+f+7 : x(h)=b*f+d-15 : y(h)=c*a+e-11 : l(h)=g+97 : n(g)=h
  41.       g=g+1 : xl(h)=6*f+10 : yl(h)=4*a+1
  42.     NEXT f
  43.   NEXT a
  44.   CLS
  45.   FOR a=0 TO 4
  46.     LINE(d,c*a+e)-(b*4+d,c*a+e),2 : LINE(b*a+d,e)-(b*a+d,c*4+e),2
  47.   NEXT a
  48.   a=0 : f=0
  49.   GOSUB Lne
  50.   a=b+b
  51.   GOSUB Lne
  52.   f=c+c
  53.   GOSUB Lne
  54.   a=0
  55.   GOSUB Lne
  56.   FOR a=0 TO 42 : READ b(a) : GOSUB Sevensixo : NEXT a
  57. RETURN
  58.  
  59. Lne:
  60.   LINE (d+a,e+f)-(2*b+d+a,2*c+e+f),2 : LINE (d+a,2*c+e+f)-(2*b+d+a,e+f),2
  61. RETURN
  62.  
  63. Sevensixo:
  64.   IF b(a)=2 THEN RETURN
  65.   IF b(a)<0 THEN PUT (x(a),y(a)),Witch,PSET
  66.   IF b(a)=0 THEN PUT (x(a),y(a)),Square,PSET
  67.   IF b(a)>0 THEN PUT (x(a),y(a)),Ghost,PSET
  68.   LOCATE yl(a),xl(a) : PRINT CHR$(l(a))
  69. RETURN
  70.  
  71. Requestor:
  72.   d=0 : LOCATE 20,1
  73.   IF s=1 THEN PRINT "Ghost's Turn" ELSE PRINT "Witches Turn"
  74.   LOCATE 21,1
  75.   PRINT  TAB (16) "From:";
  76. Lp1:
  77.   e=e+1 : K$= INKEY$ : IF K$="" THEN Lp1
  78.   IF ASC(K$)=13 THEN GOSUB Blank : RANDOMIZE TIMER : GOTO Twoo
  79.   IF ASC (K$)<97 OR ASC (K$)>121 THEN Lp1  
  80.   PRINT K$ : a=n(ASC(K$)-97) : z=a
  81. Lp3:  
  82.   LOCATE 23,18 : PRINT "To:";
  83. Lp2:
  84.   K$=INKEY$ : IF K$="" THEN Lp2
  85.   IF ASC (K$)<97 OR ASC (K$)>121 THEN Lp2
  86.   PRINT K$; : t1=n(ASC(K$)-97)
  87.   ck=1 : l=0 : k1=0 : GOSUB Sixty : ck=0 : h=0 : a=7 : IF a=36 THEN Dodge
  88.   
  89. Dm2:
  90.   GOSUB Sixty : IF h>=1 THEN Dodge
  91.   a=a+1 : IF a<36 THEN Dm2
  92. Dodge:
  93.   IF d THEN Fourseveno
  94.   IF l THEN Foureighto
  95. Tone:
  96.   SOUND 99,5 : GOTO Requestor
  97. Fourseveno:
  98.   IF l=0 OR k1=0 THEN SOUND 99,5 : GOTO fiveone
  99. Foureighto:  
  100.   IF k1=0 AND h>=1 THEN Tone
  101.   f=z : t=t1 : K=k1 : GOSUB Leave
  102.   IF k1=0 THEN Quarterc
  103.   a=t : z=a : h=0 : GOSUB Sixty
  104.   IF h<1 THEN Quarterc
  105. fiveone:
  106.   GOSUB Blank : d=1 : GOTO Lp3
  107.                 
  108. Leave:
  109.   b(t)=b(f) : b(f)=0 : a=f : GOSUB Sevensixo
  110.   IF K THEN b(K)=0 : a=K : GOSUB Sevensixo
  111.   a=t : GOTO Sevensixo
  112. Leave2:
  113.   IF b(c+m(b)) THEN 160
  114.   sc=1+RND(1)*.9
  115.   IF h<sc THEN h=sc : f=a : t=c+m(b) : K=c
  116.   IF ck=0 THEN GOTO 160
  117.   IF t1=c+m(b) THEN l=1 : k1=c : b=7
  118. RETURN
  119.  
  120. Quarterc:
  121.   s=-s : h=0 : a=7
  122. Twosixo:
  123.   IF a=36 THEN Twoc
  124.   GOSUB Sixty
  125.   IF h=0 THEN a= a+1 : GOTO Twosixo
  126. GOTO Requestor
  127.  
  128. Blank:
  129.   LOCATE 21,1 :PRINT SPACE$(30);
  130.   LOCATE 23,1 : PRINT SPACE$(30);
  131. RETURN
  132.  
  133. Sixty:
  134.   IF b(a)=0 OR b(a)=-s OR b(a)=2 THEN RETURN
  135.   FOR b=0 TO d(a-7)
  136.     c=a+m(b)
  137.     IF b(c)=s OR b(c)=2 THEN 160
  138.     IF b(c) THEN Leave2:
  139.     sc=RND(1)*.9
  140.     IF h<sc THEN h=sc : f=a : t=c
  141.     IF ck=1 AND t1=c THEN l=1 : b=7 
  142. 160 NEXT:RETURN
  143.  
  144. Twoc:
  145.   GOSUB Blank 
  146.   LOCATE 20,1 
  147.   IF s=1 THEN  PRINT "The Witches Win"; :GOTO Startagain 
  148.   PRINT "The Ghosts Win" : GOTO Startagain
  149.     
  150.   
  151. Startagain:
  152.   LOCATE 23,1
  153.   PRINT "Do you wish to play again? Y/N";
  154. Loop:
  155.   K$=INKEY$:IF K$="" THEN Loop  
  156.   IF K$="y" OR K$="Y" THEN RUN
  157.   WINDOW CLOSE 2 : SCREEN CLOSE 2 : CLEAR : SYSTEM
  158.                                                           
  159. Ghostbuilder:
  160.   PALETTE 14,.33,.13,0 : PALETTE 13,1,.81,.67 : PALETTE 15,.46,.46,.46
  161.   FOR y=82 TO 101
  162.     FOR x=58 TO 73
  163.       READ col : IF col=50 THEN Nextx
  164.       PRESET (x,y),col
  165. Nextx:
  166.   NEXT x
  167.     NEXT y
  168.   GET (50,80)-(81,103),Witch
  169.   FOR y=82 TO 100
  170.     FOR x=232 TO 245
  171.      READ col : IF col=50 THEN Nextx1
  172.      PRESET (x,y),col
  173. Nextx1:
  174.     NEXT x 
  175.   NEXT y   
  176.   GET (230,80)-(261,103),Ghost
  177. RETURN
  178.  
  179. REM DATA FOR WITCH
  180. 210   DATA 50,50,02,50,50,50,50,50,50,50,50,50,50,50,50,50
  181. 201   DATA 50,02,02,02,50,50,50,50,50,50,50,50,50,50,50,50
  182. 230   DATA 50,02,02,02,02,02,50,50,50,50,50,50,50,50,50,50
  183. 240   DATA 02,50,02,02,02,02,02,02,02,02,50,50,50,50,50,50
  184. 250   DATA 50,50,02,02,14,14,14,14,14,50,02,02,02,50,50,50
  185. 260   DATA 50,02,50,13,13,13,14,14,14,14,50,50,50,50,50,50
  186. 270   DATA 02,50,13,50,13,13,02,02,14,14,50,50,50,50,50,50
  187. 280   DATA 50,50,50,50,13,50,02,02,02,02,02,02,50,50,50,50
  188. 290   DATA 50,50,50,13,50,50,02,02,15,02,02,02,02,50,50,50
  189. 300   DATA 50,50,13,13,02,02,02,02,15,02,02,02,02,50,50,50
  190. 310   DATA 50,50,13,13,02,02,02,02,15,02,02,02,02,50,50,50
  191. 301   DATA 50,50,50,50,02,02,02,02,15,02,02,02,50,50,50,50
  192. 330   DATA 50,50,50,50,50,15,15,15,02,02,02,02,50,50,50,50
  193. 340   DATA 50,50,50,50,50,02,02,15,02,02,15,02,50,50,50,50
  194. 350   DATA 50,50,50,50,50,02,02,15,02,02,15,02,02,50,50,50
  195. 360   DATA 50,50,50,50,50,15,15,15,15,15,15,02,02,02,50,50
  196. 370   DATA 50,50,50,50,50,50,15,15,15,15,15,15,15,15,50,50
  197. 380   DATA 50,50,50,50,50,50,15,15,15,15,15,15,15,15,15,50
  198. 390   DATA 50,50,50,50,50,50,14,14,50,15,15,15,15,15,15,15
  199. 400   DATA 50,50,50,50,50,14,14,14,50,50,14,14,14,50,50,50
  200.   
  201. 410   REM DATA FOR GHOST
  202. 430   DATA 50,50,50,50,50,50,01,01,50,01,01,50,50,50
  203. 440   DATA 50,50,50,50,50,50,50,01,01,01,01,01,50,50
  204. 450   DATA 50,50,01,01,01,50,50,01,01,01,01,01,01,50
  205. 460   DATA 50,50,01,01,02,01,50,01,01,01,01,01,01,50
  206. 470   DATA 50,50,01,02,01,01,01,01,01,01,01,50,01,50
  207. 480   DATA 50,50,01,01,01,02,01,01,01,01,01,01,50,50
  208. 490   DATA 50,50,50,50,01,01,01,01,01,01,01,01,50,50
  209. 500   DATA 50,01,50,01,01,01,01,01,01,01,50,01,50,50
  210. 510   DATA 50,01,01,01,01,01,01,01,01,01,01,50,50,50
  211. 501   DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,50
  212. 530   DATA 50,01,01,01,01,50,50,01,01,01,15,01,01,50
  213. 540   DATA 50,01,01,01,01,50,50,01,01,01,15,01,01,50
  214. 550   DATA 50,50,01,01,50,50,01,01,01,15,01,15,01,50
  215. 560   DATA 50,50,01,01,50,01,01,15,01,15,01,01,15,50
  216. 570   DATA 50,50,01,50,50,01,01,15,01,15,01,01,50,50
  217. 580   DATA 50,50,50,50,01,01,15,01,01,15,01,01,50,50
  218. 590   DATA 50,50,50,01,01,15,01,01,01,15,01,01,01,50
  219. 600   DATA 50,50,50,01,01,50,01,01,01,15,01,01,01,01
  220. 610   DATA 50,50,50,50,50,50,01,01,01,50,50,01,01,01
  221.   
  222. 'control data  
  223.   DATA -6,1,6,-1,-5,7,5,-7
  224.   DATA 7,3,7,3,7,0,3,7,3,7,3,0
  225.   DATA 7,3,7,3,7,0,3,7,3,7,3,0,7,3,7,3,7
  226.   DATA 2,2,2,2,2,2,2,-1,-1,-1,-1,-1,2
  227.   DATA -1,-1,-1,-1,-1,2,-1,-1,0,1,1,2
  228.   DATA 1,1,1,1,1,2,1,1,1,1,1,2,2,2,2,2,2,2
  229.   
  230.